// 定义请求的默认配置
const baseURL = 'http://localhost:8000'; // 服务器地址

const request = async (options = {}) => {
  // 默认的请求配置
  const defaultOptions = {
    url: '', // 请求地址（必须）
    method: 'GET', // 请求方法，默认为 GET
    data: {}, // 请求数据
    header: {
      'Content-Type': 'application/json', // 默认请求头
    },
    timeout: 60000, // 超时时间，单位：毫秒
  };

  // 合并用户自定义配置和默认配置
  const mergedOptions = { ...defaultOptions, ...options };

  // 拼接完整的请求 URL
  mergedOptions.url = baseURL + mergedOptions.url;

  // 返回一个 Promise 对象
  return new Promise((resolve, reject) => {
    // 调用 uni.request 进行请求
    uni.request({
      ...mergedOptions,
      success: (res) => {
        // 请求成功
        if (res.statusCode === 200) {
          resolve(res.data); // 返回响应数据
        } else {
          reject(new Error(`Request failed with status code ${res.statusCode}`));
        }
      },
      fail: (err) => {
        // 请求失败
        reject(err);
      },
      complete: () => {
        // 请求完成（无论成功或失败）
      },
    });
  });
};

export default request;